package main

import (
	"fmt"
	"math"
	"unsafe"
)

func main() {
	Integer()
	fmt.Println()
	UnsignedInteger()
	fmt.Println("-----浮点型-----")
	ShowFloat()

}

// ShowFloat 浮点型案例
func ShowFloat() {
	var num1 float32 = math.MaxFloat32
	var num2 = math.MaxFloat64

	fmt.Printf("num1的类型是：%T , num1 大小是： %d , num1是%g \n",
		num1, unsafe.Sizeof(num1), num1)
	fmt.Printf("num2的类型是：%T , num2 大小是： %d , num2是%g \n",
		num2, unsafe.Sizeof(num2), num2)

}

// UnsignedInteger 无符号整型
func UnsignedInteger() {
	var num8 uint8 = 128
	var num16 uint16 = 32768
	var num32 uint32 = math.MaxUint32
	var num64 uint64 = math.MaxUint64
	var num uint = math.MaxInt

	fmt.Printf("num8 的类型是： %T, num8 的大小是： %d, num8是： %d\n",
		num8, unsafe.Sizeof(num8), num8)
	fmt.Printf("num16 的类型是： %T, num16 的大小是： %d, num16是： %d\n",
		num16, unsafe.Sizeof(num16), num16)
	fmt.Printf("num32 的类型是： %T, num32 的大小是： %d, num32是： %d\n",
		num32, unsafe.Sizeof(num32), num32)
	fmt.Printf("num64 的类型是： %T, num64 的大小是： %d, num64是： %d\n",
		num64, unsafe.Sizeof(num64), num64)
	fmt.Printf("num 的类型是： %T, num 的大小是： %d, num是： %d\n",
		num, unsafe.Sizeof(num), num)
}

// Integer 有符号整形
func Integer() {
	var num8 int8 = 127
	var num16 int16 = 32767
	var num32 int32 = math.MaxInt32
	var num64 int64 = math.MaxInt64
	var num int = math.MaxInt

	fmt.Printf("num8 的类型是： %T, num8 的大小是： %d, num8是： %d\n",
		num8, unsafe.Sizeof(num8), num8)
	fmt.Printf("num16 的类型是： %T, num16 的大小是： %d, num16是： %d\n",
		num16, unsafe.Sizeof(num16), num16)
	fmt.Printf("num32 的类型是： %T, num32 的大小是： %d, num32是： %d\n",
		num32, unsafe.Sizeof(num32), num32)
	fmt.Printf("num64 的类型是： %T, num64 的大小是： %d, num64是： %d\n",
		num64, unsafe.Sizeof(num64), num64)
	fmt.Printf("num 的类型是： %T, num 的大小是： %d, num是： %d\n",
		num, unsafe.Sizeof(num), num)
}
